前言:常见效果的卡牌可以不用写代码,自动会根据描述生成代码,有些效果通过加标签的形式来辅助生成代码。如果随从效果一致可以直接引用不需要写全代码。实在没有办法了才需要自己写代码。
使常见效果不用写代码的奥秘其实就在这个tl2函数【偷懒2】
直接下滑到这里,这是根据标签进行简化的:
这里的内容称为标签
rareEff 稀有效果,满足条件显示金色边框,例如龙牌和连击。如表标签是rareEff,就给这个效果补上active的判断。否则,标签根据冒号分隔进一步做判断
anm:指示线类型,skillgh:特殊光环。后面都是常见效果的简写。再接下来是根据卡牌描述生成效果。描述和这些一致的会自动生成代码。
理解了这些东西,就知道这个简化幅度有多么的大了:关键字叠加随从全部不用写代码,常见效果叠加随从全部不用写代码。重复效果随从只需要引用。
再详细讲一下标签辅助生成代码的机制:guimu:小鬼召唤师类似的受伤召唤随从效果.例:'guimu:小鬼','guimu:白银之手新兵'。
lianji:连击召怪,见迪菲亚头目
lianji:迪菲亚强盗
triggers类,指定时机执行对应的效果。默认是召唤随从,可以后面接rangain>/gain>/weapon>/aoercv>/buff>。例子:battleRoal:侍从
battleRoal:rangain>4鱼人
结束:rangain>梦境
等等等等等等
在进行代码编写前,我们必须了解有哪些常量:打开constant.js查看。
这些常量并不要求会背。只要知道在哪里去找就行。
随从代码的范例,例如飞刀杂耍者格式是:
时机:{
限制1,
限制2,
随从目标,
随从效果
}
如果只有随从效果,可以简化为时机:随从效果,例如图中这个阿古斯防御者
上面的限制一和限制二是下面的代码实现的:sc:true(事件的来源是这个随从),self:true(事件的触发者是这个随从),notlink(事件的产生对象不是自己)。用的最多的就是sef:true和fl:true。notlimk主要用在summon和useCard的时机,sc用在伤害时机上,只有这里记录的时机才能触发效果。
部分中英文的对照
可能不清楚的时机:hsdmg是伤害hsrcv是回复,deathFL是随从死亡overload是过载。
第一章完,第二章:
炉石普通的重要函数player.sctp,源码
这个函数的作用是获取角色们,第一个参数是范围,第二个参数是默认值。范围加下划线(_)就代表自己以外
常见范围:
mine 自己的随从
notmine 敌方随从
myside 已方单位
opposide 敌方单位
mns 所有随从
main/heros 玩家
neighbor 相邻随从
all 全部单位
field 场上的全部单位(包括武器和奥秘)。默认值的妙用
如果默认值是player类型,这个函数的作用改为判断该player是否在范围里
例如:
player.sctp('mine',target);
判断target是不是自己的随从
另外一个妙用,如果默认值是函数,就判断范围内有没有满足函数的单位
player.sctp('mine',tg=>tg.rkind=='wildbeast');
判断自己有没有野兽
(从源码上看,用了eachsome,会遍历所有单位,可以只用来做遍历)
这就是player.sctp的用法了,非常全面
1.获取范围内的单位
2.判断目标是否在范围内
3.判断范围内是否有符合条件的目标
- 遍历
数值光环,例如火蛇图腾:
numgh:这代表里面的效果是一个数值光环.
name代表光环类型,value代表这个是改变攻血的光环。
value:[2,0],代表加二攻击力,零生命值。
range代表光环的影响范围,参数follow代表该光环随从,target代表目标,如果返回true代表该目标受到该光环影响。火蛇图腾的影响目标是相邻随从所以代码有neighbor(邻居)。
如果有随从在该随从的邻位,那么受到光环影响,攻血改变,改变数值为[2,0]。range,默认是乙方的其他随从下面是雷欧克的代码:
鱼人很多数值光环下面依次是鱼人领军,暗灵先知和老瞎眼:
mns_,mns代表所有随从,下划线代表自己以外,那么mns_代表自己以外的所有随从。
这是光耀之子,攻击力等于生命力。later代表这个光环有较低的优先级,最后结算。subtype:'finial',代表这个光环是将攻击力改变成确认的值,而不是增减。
另一种数值光环:改变手牌费用。这是巫师学徒,自己手牌中的法术牌费用减一:
ghfilter光环生效条件,如果返回真光环失效。card代表牌,follow代表这个随从,target代表这个牌的主人。
奥秘格式详解
所有内容都在secret里面
effect里的第一句和第三句是必写的,而且要在同一个step里面,第二句才是执行内容
event.obj.blink
顾名思义,blink是闪烁的意思,这句代码的作用就是播放动画
event.obj.tuichang
退场,奥秘执行后移除效果,奥秘进入弃牌堆。如果没有这句,奥秘会无限触发?Ľ
如果刚召唤上来且没冲锋
如果有突袭,看对面有没有随从
如果没有突袭,不能攻击
如果刚召唤上来有突袭没冲锋
如果目标不是随从,不能成为目标

部分代码作弊详情:
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["武器","圣光的正义" ]);
get.HSF("作弊2", ["特召","死亡之翼" ]);
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊", ["特召","老佛爷" ]);
get.HSF("作弊", ["特召","老佛爷" ]);
get.HSF("作弊", ["特召","老佛爷" ]);
get.HSF("作弊", ["特召","老佛爷" ]);
get.HSF("作弊", ["特召","蛋总" ]);
get.HSF("作弊", ["特召","飞刀杂耍者" ]);
get.HSF("作弊", ["获得","诅咒之刃" ]);
get.HSF("作弊", ["获得","毁灭之刃" ]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["获得","感知恶魔" ]);
get.HSF("作弊", ["武器","公正之剑" ]);
get.HSF("作弊", ["获得","马云" ]);
get.HSF("作弊", ["特召","飞刀" ]);
get.HSF("作弊2", ["武器","刺客之刃" ]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊2", ["特召","恶毒铁匠" ]);
get.HSF("作弊", ["获得","奥术冲击" ]);
get.HSF("作弊", ["武器","奥金斧" ]);
get.HSF("作弊2", ["武器","奥金斧" ]);
get.HSF("作弊", ["获得","无面" ]);
get.HSF("作弊", ["特召","老佛爷" ]);
get.HSF("作弊2", ["特召","詹姆斯" ]);
game.resume();
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["特召","恐鳞" ]);
get.HSF("作弊", ["获得","百兽之王" ]);
get.HSF("作弊", ["特召","马云" ]);
get.HSF("作弊", ["特召","马云" ]);
get.HSF("作弊", ["特召","马云" ]);
get.HSF("作弊", ["特召","马云" ]);
get.HSF("作弊", ["特召","马云" ]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["获得","圣殿执行者" ]);
get.HSF("作弊2", ["特召","马云" ]);
get.HSF("作弊2", ["特召","马云" ]);
get.HSF("作弊2", ["特召","马云" ]);
get.HSF("作弊2", ["特召","马云" ]);
get.HSF("作弊2", ["特召","飞刀" ]);
get.HSF("作弊", ["获得","侏儒变形师" ]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["获得","布林顿3000型" ]);
get.HSF("作弊2", ["特召","鬼灵爬行者" ]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["获得","死亡之咬" ]);
game.me.addgjzbuff("fengnu");
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊2", ["特召","自爆绵羊" ]);
get.HSF("作弊", ["特召","蛋总" ]);
get.HSF("作弊", ["获得","旋风斩" ]);
get.HSF("作弊", ["获得","负伤剑圣" ]);
get.HSF("作弊", ["获得","激活" ]);
get.HSF("作弊", ["特召","痛苦女王" ]);
get.HSF("作弊", ["强化",17 ]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["获得","丛林之魂" ]);
get.HSF("作弊", ["武器","公正之剑" ]);
get.HSF("作弊", ["获得","死亡之咬" ]);
get.HSF("作弊", ["获得","血帆海盗" ]);
get.HSF("作弊", ["获得","重型刃弩" ]);
get.HSF("作弊", ["特召", "新年爆竹"]);
get.HSF("作弊", ["获得", "心灵视界"]);
get.HSF("作弊", ["获得", "小软"]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["获得", "密林射手"]);
get.HSF("作弊", ["获得", "闪电箭"]);
get.HSF("作弊", ["获得", "幸运币"]);
get.HSF("作弊", ["获得", "鱼人骑士"]);
get.HSF("作弊", ["强化",10]);
get.HSF("作弊", ["获得", "环"]);
get.HSF("作弊", ["获得", "魅魔"]);
get.HSF("作弊", ["获得", "砂槌萨满祭司"]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊2", ["获得","负伤剑圣"]);
get.HSF("作弊", ["获得","关门放狗"]);
game.enemy.hs_discard(5);
get.HSF("作弊", ["水晶", 3]);
get.HSF("作弊", ["获得", "牺牲契约"]);
get.HSF("作弊", ["特召", "疯狂爆破者"]);
get.HSF("作弊2", ["特召", "虚空行者"]);
get.HSF("作弊", ["获得", "不稳定的传送门"]);
get.HSF("作弊", ["获得", "群体驱散"]);
get.HSF("作弊", ["特召", "傻子王"]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["武器", "奥金斧"]);
get.HSF("作弊", ["获得", "升级"]);
get.HSF("作弊", ["获得", "无面"]);
game.me.cardPile.directgain(game.me.getCards('h'));
get.HSF("作弊", ["获得", "发财"]);
get.HSF("作弊", ["特召", "蜘蛛人女王"]);
get.HSF("作弊", ["获得", "环"]);
get.HSF("作弊", ["武器", "食人魔战槌"]);
get.HSF("作弊", ["获得", "恐狼前锋"]);
get.HSF("作弊", ["获得", "不稳定的传送门"]);
get.HSF("作弊", ["获得", "嗜血"]);
game.me.heroskill.cost=0;
game.me.heroskill.usable=10000;
game.enemy.baseATK=1;
get.HSF("作弊2", ["强化",3]);
get.HSF("作弊2", ["异能","fengnu"]);
get.HSF("作弊", ["水晶", 10]);
get.HSF("作弊", ["特召", "暗影子嗣"]);
get.HSF("作弊", ["特召", "鬼灵爬行者"]);
get.HSF("作弊", ["获得", "末日守卫"]);
get.HSF("作弊", ["获得", "加拉克苏斯之拳"]);
get.HSF("作弊", ["特召", "腐肉食尸鬼"]);
get.HSF("作弊", ["特召", "石牙野猪"]);
get.HSF("作弊", ["特召", "狼人渗透者"]);
get.HSF("作弊", ["特召", "战歌指挥官"]);
get.HSF("作弊", ["特召2", "安东尼"]);
get.HSF("作弊", ["特召", ""]);
get.HSF("作弊", ["武器", "公正之剑"]);
get.HSF("作弊", ["获得", "公正之剑"]);
get.HSF("作弊", ["获得", "砰砰博士"]);
game.me.HSF("changeHeroskill",["雷霆震击"]);
//可收集卡片数量
get.hskachi("all").length;
//导出卡组
get.HSF("outputRD",[2])